/*
 * testSincroInodos.c
 *
 *  Created on: 06/07/2012
 *      Author: utnso
 */

#include "libSincroInodos.h"

typedef struct t_datosTrabajo{
	uint32_t operacion;
	uint32_t numInodo;
}t_datosTrabajo;

void trabajoEnInodo(void* datosTrabajo) {
	printf("Inicio el trabajo en un inodo en el thread %u\n", (uint32_t) pthread_self());
	t_datosTrabajo* datosTrabajoAux = datosTrabajo;
	if (datosTrabajoAux->operacion == 1) {
		empiezoATrabajarEnInodo(datosTrabajoAux->numInodo, 0);
	} else if (datosTrabajoAux->operacion == 2) {
		empiezoATrabajarEnInodo(datosTrabajoAux->numInodo, 1);
	} else {
		dejoDeTrabajarEnInodo(datosTrabajoAux->numInodo);
	}
	printf("Finalizo el trabajo en un inodo en el thread %u\n", (uint32_t) pthread_self());
	free(datosTrabajo);
}

int32_t main(void) {
	while (1) {
		printf("======================================================================\n");
		printf("Operaciones:\n");
		printf("     1          Comenzar a leer en un inodo.\n");
		printf("     2          Comenzar a escribir en un inodo.\n");
		printf("     3          Dejar de trabajar en un inodo.\n");
		printf("     4          Imprimir la cantidad de inodos en la lista.\n");
		printf("Operacion:");
		uint32_t operacion = 0;
		scanf("%d", &operacion);
		if (operacion == 1 || operacion == 2 || operacion == 3) {
			uint32_t numInodo = 0;
			printf("Numero de inodo:");
			scanf("%d", &numInodo);
			/*
			t_datosTrabajo* datosTrabajo = malloc(sizeof(t_datosTrabajo));
			datosTrabajo->operacion = operacion;
			datosTrabajo->numInodo = numInodo;
			pthread_t thread_id = 0;
			pthread_create(&thread_id, NULL, (void*) &trabajoEnInodo, (void*) datosTrabajo);
			*/
			if (operacion == 1) {
				empiezoATrabajarEnInodo(numInodo, 0);
			} else if (operacion == 2) {
				empiezoATrabajarEnInodo(numInodo, 1);
			} else {
				dejoDeTrabajarEnInodo(numInodo);
			}
		} else if (operacion == 4) {
			uint32_t cantNodos = cantNodosSincroInodos();
			printf("Hay %d nodos en la lista.\n", cantNodos);
		}
		printf("======================================================================\n");
	}
}
